#include "smt.h"


int smt_api_reset(smt_t obj)
{
    if (obj == NULL) // 检查对象是否有效
    {
        return SMT_ERR_INVALID_OBJ; // 返回错误
    }

    obj->cur_pos = 0; // 重置当前位置
    obj->target_pos = 0; // 重置目标位置
    obj->origin_state = SMT_ORIGIN_FINGING; // 重置原点状态为寻找原点
    obj->origin_offset = 0; // 重置原点偏移量
    obj->curve_state = SMT_STATE_IDLE; // 重置运动状态为空闲

    __HAL_TIM_DISABLE(obj->hw->htim); // 关闭定时器PWM输出
    __HAL_TIM_SET_AUTORELOAD(obj->hw->htim, 0); // 重置定时器自动重载寄存器的值


    return SMT_ERR_OK; // 返回成功
}